<?php
	class etapas extends Controller {
		public function __construct() {
			parent::Controller();
			$this->load->model(array('metapas','mscript','clasificacionetapamodel'));
			$this->load->helper(array('form','url'));
			$this->load->library(array('upload','form_validation'));
			$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
		}

		function index() 
		{
			$this->load->view('main', array('content_page' => 'etapas_list','menutop' => 0));
		}

		function add() {			
			$scriptSms = $this->mscript->loadRegistroByWhere(array("tipoScript" => 1));
			$scriptMail = $this->mscript->loadRegistroByWhere(array("tipoScript" => 2));
			$this->load->view('main', array('content_page'  => 'etapa_add',
			                                'menutop'       => 0,
			                                'descripcion'   => '', 
			                                'scriptSms'     => $scriptSms,
			                                'scriptMail'    => $scriptMail));
		}

		function edit($id_etapa) {
			$etapa = $this->metapas->LoadEtapaById($id_etapa);
			$scriptSms = $this->mscript->loadRegistroByWhere(array("tipoScript" => 1));
			$scriptMail = $this->mscript->loadRegistroByWhere(array("tipoScript" => 2));
			$this->load->view('main', array('content_page'   => 'etapa_edit',
			                                'menutop'        => 0, 
			                                'etapa'          => $etapa,
			                                'scriptSms'      => $scriptSms,
			                                'scriptMail'     => $scriptMail));
		}

		function delete() 
	   {
			$ids = $this->input->post('delete_rows');
			if(strpos($ids,"|") === false) 
			{ 
				if($this->metapas->Delete($ids) !== false) 
				{
					echo 'El Registro fue eliminado satisfactoriamente';
				} 
				else 
				{
						echo 'Hubo un error eliminando el Registro.  Intentelo nuevamente mas tarde 						o comuniquese con el administrador';
				}
				
			} 
			else 
			{
				$allGood = true;$allRelationGood = true;
				while(strlen($ids) > 0) 
				{
					if(strpos($ids, "|") !== false) {
						$actual = substr($ids, 0,strpos($ids, "|"));
						$ids = substr($ids,strpos($ids, "|") + 1);
					} else {
						$actual = $ids;
						$ids = "";
					}

				
						if($this->metapas->Delete($actual) == 0) 
						{//Error deleting
							$allGood = false;
						}
					}
					echo 'Los Registros fueron eliminados satisfactoriamente';
				}
	}

		function save() {
			$descripcion = "";
			$this->form_validation->set_rules('name', '"Nombre"', 'trim|required');
			$this->form_validation->set_rules('tiempo_estimado', '"Tiempo Estimado"', 'trim|required|is_natural_no_zero');

			if ($this->form_validation->run()) {
				$this->session->set_flashdata('status_title', 'Mantenimiento de Etapas');
				$this->session->set_flashdata('status_url', 'etapas');

				if($this->input->post('id_etapa') === false) {
					if($this->metapas->CreateEtapa($this->input->post('name'), $this->input->post('descripcion'), $this->input->post('tiempo_estimado'),$this->input->post('scriptM'),$this->input->post('scriptS')) != false)
						$this->session->set_flashdata('status_message', 'La etapa ha sido agregada satisfactoriamente');
					else {
						$this->session->set_flashdata('status_message', 'Ha ocurrido un error agregando la etapa. Intentelo nuevamente mas tarde o comuniquese con el administrador');
					}
				} else {
					$etapa = $this->metapas->LoadEtapaById($this->input->post('id_etapa'));
					if($etapa != false) {
						$etapa->SetNombre($this->input->post('name'));
						$etapa->SetDescripcion($this->input->post('descripcion'));
						$etapa->SetTiempoEstimado($this->input->post('tiempo_estimado'));
						$etapa->setIdScriptMail($this->input->post('scriptM'));
						$etapa->setIdScriptSms($this->input->post('scriptS'));

						if($this->metapas->UpdateEtapa($etapa) != false)
							$this->session->set_flashdata('status_message', 'La etapa ha sido actualizada satisfactoriamente');
						else {
							$this->session->set_flashdata('status_message', 'Ha ocurrido un error actualizando la etapa. Intentelo nuevamente mas tarde o comuniquese con el administrador1');
						}
					} else {
						$this->session->set_flashdata('status_message', 'Ha ocurrido un error actualizando la etapa. Intentelo nuevamente mas tarde o comuniquese con el administrador2');
					}
				}
				redirect('etapas/process_status');
			} else
				$descripcion = $this->input->post('descripcion');

			$view = 'etapa_add';
			$etapa = false;
			
			if($this->input->post('id_etapa') !== false) {
				$view = 'etapa_edit';
				$etapa = $this->etapas->LoadEtapaById($this->input->post('id_etapa'));
			}

			$this->load->view('main', array('content_page' => $view, 'etapa' => $etapa, 'descripcion' => $descripcion));
		}

		function process_status() 
		{
			$this->load->view('main', array('content_page' => 'status','menutop' => 0));
		}

		function data() 
		{
			$page = $this->input->post('page') ? $this->input->post('page') : 1; // Pagina Actual o 1 por default
			$sortname = $this->input->post('sidx') ? $this->input->post('sidx') : 'ID_airport'; // Columna para el order by
			$sortorder = $this->input->post('sord') ? $this->input->post('sord') : 'asc'; // Orden (asc|desc)
			$limit = $this->input->post('rows') ? $this->input->post('rows') : 10;
			$start = $limit * $page - $limit;
			if($start < 0) $start = 0;

			header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
			header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
			header("Cache-Control: no-cache, must-revalidate" );
			header("Pragma: no-cache" );

			$records = $this->metapas->LoadEtapas($this->input->post('name'), $start, $limit, $sortname, $sortorder);

			$totalRecords = $this->metapas->GetCount($this->input->post('name'));

			$totalPages = ceil($totalRecords/$limit);
			if ($page > $totalPages) $page = $totalPages;

			$json_output = array(
				'page'		=> $page,
				'total'		=> $totalPages,
				'records'	=> $totalRecords,
				'rows'		=> array()
			);

			if($records != false) {
				foreach($records as $etapa) {
					$scriptMail =  $this->mscript->LoadRegistroById($etapa->getIdScriptMail());
					$scriptSms =  $this->mscript->LoadRegistroById($etapa->getIdScriptSms());
					$clasifProceso = $this->clasificacionetapamodel->loadRegistroById($etapa->getClasificacionProceso());
					
					$arr = $json_output['rows'][] = array('IdEtapa'          => $etapa->GetIdEtapa(), 
					                                      'NombreEtapa'      => $etapa->GetNombre(),
					                                      'DescripcionEtapa' => $etapa->GetDescripcion(), 
					                                      'tiempo_estimado'  => $etapa->GetTiempoEstimado(),
					                                      'mail'             => $scriptMail->getTitleScript(),
					                                      'sms'              => $scriptSms->getTitleScript(),
											  'classP'           => $clasifProceso->getDetalleEtapa()
                                                );
				}
			}

			echo json_encode($json_output);
		}
		
		/**
		 * 
		 * ESTE SCRIPT SE ENCARGA DE INDICAR A QUE CATEGORIA PERTENECEN LAS ETAPAS
		 * EN LA TABLA SC_Etapas
		 */
		/*public function setCategoriaEtapas()
		{
			$categorias = array('Control Interno' 	=> array('INICIAL', 'FIRMA', 'DATOS'), 
								'Produccion' 		=> array('CAMARA', 'DOCUMENTOS', 'ESPERA REG.',
													  		'GESTION DE CUENTA', 'NCF', 'PAGO DE FONDOS',
												      		'DGII', 'PROCESO OFFSHORE', 'PROCURADURIA',
													  		'PUBLICACION', 'RNP'), 
								'Entrega' 			=> array('PARA VENTA', 'PARA ENTREGA', 'MARCA',
															 'DFP', 'CASO ESPECIAL', 'OBJECION'), 
								'ONAPI' 			=>	array('ONAPI'));
			$idCategorias = array('Control Interno'	=> 1,
								  'Produccion'		=> 2,
								  'Entrega'			=> 3,
								  'ONAPI'			=> 4);
			foreach($idCategorias as $key => $idCategoria){
				$this->metapas->setIdCategoria($idCategoria, $categorias[$key]);
			}
		}*/
	}
?>